package com.red.star.wechat.data.entity;

import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import javax.persistence.Table;
import javax.persistence.Transient;
import javax.persistence.Version;
import java.util.Date;

/**
 * @author AMGuo
 * @Description 票券
 * @date 2018/02/28 19:56
 */
@Data
@Table(name = "t_coupon")
public class Coupon extends BaseEntity {

    /**
     * 龙翼券id
     */
    private String code;

    /**
     * 券的分类：1:现金券;2:满降券;3:折扣券
     */
    private Integer ticketTypeId;

    /**
     * 名称
     */
    private String ticketName;

    /**
     * 副标题
     */
    private String subTitle;

    /**
     * 开始领取时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date getBeginTime;

    /**
     * 结束领取时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date getEndTime;

    /**
     * 开始使用时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date useBeginTime;

    /**
     * 结束使用时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date useEndTime;

    /**
     * 券LOGO
     */
    private String ticketLogo;

    /**
     * 列表图片
     */
    private String listImg;

    /**
     * 领取图片
     */
    private String getImg;

    /**
     * 使用说明
     */
    private String useRemark;

    /**
     * 现金券，面额
     */
    private Double cashAmt;

    /**
     * 满降券，满额
     */
    private Double fullcutFullAmt;

    /**
     * 满降券，减额
     */
    private Double fullcutCutAmt;

    /**
     * 折扣券，折扣比例
     */
    private Double discountDiscount;

    /**
     * 1:商场电话;2:商户电话
     */
    private Integer telType;

    /**
     * 商户电话号码
     */
    private String tel;

    /**
     * 可发放数量
     */
    private Integer ticketCnt;

    /**
     * 已发放数量
     */
    private Integer detailEtCnt;

    /**
     * 每人可领用次数
     */
    private Integer maxGetCnt;

    /**
     * 0:不能领取;1:已领取;2:可以领取;3:已领完
     */
    private Integer canGet;

    /**
     * 可核销券数。
     * 0:不控制;其他:前几名可以进行兑换
     */
    private Integer canUseCnt;

    /**
     * 已核销券数
     */
    private Integer usedCnt;

    /**
     * 0:免费优惠券;1:免费单品券;2:付费优惠券;3:礼品券;4:单品付费券;5:免费券包;6:付费券包
     */
    private Integer ticketType2;

    /**
     * 商品名称
     */
    private String itemName;

    /**
     * 商品品牌
     */
    private String itemBrand;

    /**
     * 商品标题
     */
    private String itemTitle;

    /**
     * 商品副标题
     */
    private String itemSubTitle;

    /**
     * 商品标签
     */
    private String itemTag;

    /**
     * 原价
     */
    private Double listPrice;

    /**
     * 销售价(付费单品券)
     */
    private Double retailPrice;

    /**
     * 商户
     */
    private String shopName;

    /**
     * 券的归属商场
     */
    private Integer createUnitId;

    /**
     * 商场的电话
     */
    private String unitTel;

    /**
     * 商场的名称
     */
    private String unitName;

    /**
     * 0:全场券;1:品牌券
     */
    private Integer ticketKind;

    /**
     * 如果优惠券类型ticket_type_id为2.满降券，则表示 01.满额直降 02.逐单满额直降 03.阶梯面额直降 04.阶梯内满额直降 05.逢满直降
     * 如果优惠券类型ticket_type_id为3.折扣，则表示01.单一折扣 06 逐单折扣 07 阶梯内折扣
     */
    private String omsPromotionTicketRuleType;

    /**
     * OMS促销信息
     */
    private String omsPromotionTicket;

    /**
     * 起始金额
     * 满减券时的满（3000）
     * 例3000-1500，减100元
     * 折扣券时的起（3500）
     * 例3500-1000，9折
     */
    private Double beginMoney;

    /**
     * 结束金额
     * 满减券时的满（1500）
     * 例3000-1500，减100元
     * 折扣券时的止（1000）
     * 例3500-1000，9折
     */
    private Double endMoney;

    /**
     * 满减金额/折扣
     * 满减券时的减（100）
     * 例3000-1500，减100元
     * 折扣券时的折扣（90）
     * 例3500-1000，9折
     */
    private Double discount;

    /**
     * 券的种类：1全场通用2品牌券3品类券
     */
    private Integer ticketSort;

    /**
     * 券种类为品牌券or品类券时的品牌或品类的名称
     */
    private String ticketSortName;

    @Version
    private Integer version;

    @Transient
    private Integer PromotionTicketId;

    /**
     * 活动时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date promotionBeginTime;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date promotionEndTime;

    @Transient
    private String ticketStatus;

    @Transient
    private CreateUnit create_unit;

    @Data
    public static class CreateUnit{

        private String unitCode;

        private String unitName;

    }

}